package NetWork;

/**
 * ClassName:Dome001
 * Package:NetWork
 * Description:
 *
 * @Author:ZhangXin
 * @Create:2023/3/7-19:11
 * @Version:v1.0
 */
public class Dome001 {
    /*网络编程：在网络通信协议下,不同计算机上运行的程序,进行的数据传输
    * 应用场景：即时通信,网游对战,金融证券,国际贸易,邮件等等
    * 不管什么场景,都是计算机跟计算机之间通过网络进行数据传输
    *
    * Java中可以使用java.net包下的技术轻松开发出常见的网络应用程序
    *
    * 常见的软件架构
    * BS(Browser/Server)(浏览器/服务器)：只需要一个浏览器,用户通过不同网址,客户访问不同服务器
    * 优缺点：
    * 1.不需要开发客户端,只需要页面+服务端
    * 2.用户不需要下载,打开浏览器就能使用
    * 3.如果应用过大,用户体验受到影响
    *
    * CS(Client/Server)(客户端/服务器)：在用户本地需要下载并安装客户端程序,在远程有一个服务器端程序
    *优缺点:
    * 1.画面可以做的非常精美,用户体验好
    * 2.需要开发客户端,也需要开发服务端
    * 3.用户需要下贼和更新的时候太麻烦
    *
    *
    * 网络编程三要素
    * 1.确定对方电脑在互联网中的地址  (IP)->设备在网络中的地址,它是唯一标识
    * 2.确定接收数据的软件          (端口号)->应用程序在设备中唯一的标识 【0-65535】
    * 3.确定网络传输的规则          (协议)->数据在网络中传输的规则,常见的协议有UDP,TCP,http,https,ftp
    *
    * UDP协议：(网络会议,语音通话,看视频等)
    * 1.用户数据报协议
    * 2.UDP是面向无连接通信协议
    * 速度快,有大小限制一次最多发送64K，数据不安全,易丢失数据
    *
    * UDP的三种通信方式
    * 1.单播
    * 2.组播
    * 3.广播
    *
    * TCP协议：(下载软件,文字聊天,发送邮件等)
    * 1.传输控制协议
    * 2.TCP协议是面向连接的通信协议
    * 速度慢,没有大小限制,数据安全
    *
    * TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象
    * 通信之前要保证连接已建立
    * 通过Socket产生IO流来进行网络通信
    *
    *
    * 客户端
    * 1.创建客户端的Socket对象(Socket)与指定服务端连接
    *   Socket(String host,int port)
    * 2.获取输出流,写数据
    *   OutputStream getOutputStream()
    * 3.释放资源
    *   void close()
    *
    * 服务端
    * 1.创建服务器端的Socket对象(ServerSocket)
    *   ServerSocket(int port)
    * 2.监听客户端连接,返回一个Socket对象
    *   Socket accept()
    * 3.获取输入流,读取数据,并把数据显示在控制台
    *   InputStream getInputStream()
    * 4.释放资源
    *   void close()*/
}
